package appquery

import "{{.Namespace}}/pkg/query-service/domain/{{.aggregate_name}}/view"

// {{.Name}}FindByIdAppQuery 按id查询
type {{.Name}}FindByIdAppQuery struct {
	TenantId string     `json:"tenantId"`
	Id       string     `json:"id"`
}

// {{.Name}}FindByIdsAppQuery 按多个id查询
type {{.Name}}FindByIdsAppQuery struct {
	TenantId string     `json:"tenantId"`
	Ids      []string   `json:"ids"`
}

// {{.Name}}FindPagingAppQuery 分页查询
type {{.Name}}FindPagingAppQuery struct {
	TenantId    string      `json:"tenantId"`
	PageNum     int64       `json:"pageNum"`
	PageSize    int64       `json:"pageSize"`
	Filter      string      `json:"filter"`
	Sort        string      `json:"sort"`
	Fields      string      `json:"fields"`
	IsTotalRows bool        `json:"isTotalRows"`
}

// {{.Name}}FindByAggregateIdAppQuery 按聚合根id查询
type {{.Name}}FindByAggregateIdAppQuery struct {
	TenantId    string      `json:"tenantId"`
	AggregateId string      `json:"aggregateId"`
}

// {{.Name}}FindPagingResult 分页响应数据
type {{.Name}}FindPagingResult struct {
	Data       []*view.{{.Name}}View `json:"data"`
	TotalRows  *int64                `json:"totalRows,omitempty"`
	TotalPages *int64                `json:"totalPages,omitempty"`
	PageNum    int64                 `json:"pageNum"`
	PageSize   int64                 `json:"pageSize"`
	Filter     string                `json:"filter"`
	Sort       string                `json:"sort"`
    Fields     string                `json:"fields"`
	Error      error                 `json:"-"`
	IsFound    bool                  `json:"-"`
	IsTotalRows bool                 `json:"isTotalRows"`
}

// {{.Name}}FindAllAppQuery 查询所有数据
type {{.Name}}FindAllAppQuery struct {
	TenantId string `json:"tenantId"`
}

{{- if .IsEntity }}
// {{.Name}}FindBy{{.AggregateName}}IdAppQuery 按{{.AggregateName}}Id查询
type {{.Name}}FindBy{{.AggregateName}}IdAppQuery struct {
	TenantId string
	{{.AggregateName}}Id string
}
{{- end }}

func New{{.Name}}FindByIdAppQuery() *{{.Name}}FindByIdAppQuery {
	return &{{.Name}}FindByIdAppQuery{}
}

func New{{.Name}}FindByIdsAppQuery() *{{.Name}}FindByIdsAppQuery {
	return &{{.Name}}FindByIdsAppQuery{}
}

func New{{.Name}}FindByAggregateIdAppQuery() *{{.Name}}FindByAggregateIdAppQuery {
	return &{{.Name}}FindByAggregateIdAppQuery{}
}

func New{{.Name}}FindPagingAppQuery() *{{.Name}}FindPagingAppQuery {
	return &{{.Name}}FindPagingAppQuery{}
}

func New{{.Name}}FindPagingResult() *{{.Name}}FindPagingResult {
	return &{{.Name}}FindPagingResult{}
}

func New{{.Name}}FindAllAppQuery() *{{.Name}}FindAllAppQuery {
	return &{{.Name}}FindAllAppQuery{}
}

{{- if .IsEntity }}
func New{{.Name}}FindBy{{.AggregateName}}IdAppQuery() *{{.Name}}FindBy{{.AggregateName}}IdAppQuery {
	return &{{.Name}}FindBy{{.AggregateName}}IdAppQuery{}
}
{{- end }}
